
// 1.引入用来发送请求的方法，一定要补全路径
import { request } from "../../request/request.js"
/**
 * 1.页面被打开的时候 onShow
 *   1）onShow不同于onLoad无法在形参上接收options参数
 *   2）判断缓存中有没有token
 *      .没有=>直接跳转到授权页面
 *      .有=>直接往下进行
 *   3）获取url上的参数type
 *   4）根据type来决定页面标题的数组元素，哪个被激活选中
 *   5）根据type去发送请求获取订单数据
 *   6）渲染页面
 * 2.点击不同的标题，重新发送请求来获取和渲染数据
 *   
 */

Page({
  data: {
    tabs: [
      {
        id: 0,
        value: "全部",
        isActive: true
      },
      {
        id: 1,
        value: "待付款",
        isActive: false
      },
      {
        id: 2,
        value: "待发货",
        isActive: false
      },
      {
        id: 3,
        value: "退款/售后",
        isActive: false
      }
    ],
    orders: [] //订单列表
  },
  // 页面打开
  onShow(options) {
    // console.log(options) // undefined
    // 判断token是否为空，空就直接跳转授权页面
    const token = wx.getStorageSync("token")
    if(!token) {
      wx.navigateTo({
        url: '/pages/auth/auth'
      })
      return
    }

    // 1.获取当前的小程序的页面栈-数组，长度最大是10个页面
    let pages = getCurrentPages()
    // console.log(pages)
    // 2.数组中，索引最大的页面就是当前页面
    let currentPage = pages[pages.length - 1]
    // console.log(currentPage.options)
    // 3.获取url上的type参数
    const { type } = currentPage.options
    // 4.激活选中页面标题
    this.changeTitleByIndex(type - 1)
    this.getOrders(type)
  },
  // 获取订单列表方法
  async getOrders(type) {
    const res = await request({
      url: '/my/orders/all',
      data: {type}
    })
    this.setData({
      orders: res.orders.map(v => ({ ...v, create_time_cn: (new Date(v.create_time * 1000).toLocaleString()) }))
    })
    // console.log(res)
  },
  // 根据标题索引来激活选中，标题数组
  changeTitleByIndex(index) {
    // 2.修改源数组
    let { tabs } = this.data;
    tabs.forEach((v, i) => i === index ? v.isActive = true : v.isActive = false);
    // 3.赋值到data中
    this.setData({
      tabs
    })
  },
  // 标题点击事件，从子组件传递过来
  handleTabsItemChange(e) {
    //console.log(e);
    // 1.获取被点击的标题索引
    const { index } = e.detail;
    this.changeTitleByIndex(index)
    // 2.重新发送请求 type = 1 index = 0
    this.getOrders(index + 1)
  }
})
